package blog.mapper;

import blog.entity.Tag;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TagMapper {
    /**
     * 查询所有的标签
     * @return 标签列表
     */
    List<Tag> findAllTags();
    /**
     * 根据标签Id删除标签
     * @param id 标签Id
     */
    void deleteTagById(Integer id);
    /**
     * 添加一个标签
     * @param tagName 标签名
     * @param tagDescription 标签描述
     */
    void insertTag(@Param("tagName") String tagName, @Param("tagDescription") String tagDescription);
    /**
     * 根据标签名查询标签信息
     * @param name 标签名
     * @return 标签信息
     */
    Tag selectTagByName(String name);

    /**
     * 添加文章与标签之间的关系
     * @param tagId 标签Id
     * @param articleId 文章Id
     */
    void addArticleTag_ref(@Param("tagId") Integer tagId,@Param("articleId") Integer articleId);

    /**
     * 删除文章-标签表中的文章
     * @param id 文章Id
     */
    void deleteArticleRefTag(Integer id);
    /**
     * 根据文章Id查询该文章所有标签信息
     * @param id 文章Id
     * @return 全部标签信息
     */
    List<Tag> selectTagsByArticleId(Integer id);
    /**
     * 根据标签Id获取标签信息
     * @param id 标签Id
     * @return 标签信息
     */
    Tag getTagById(Integer id);
    /**
     * 根据标签Id修改标签信息
     * @param tag 标签Id
     */
    void updateTag(Tag tag);
}
